package br.com.senac.pi5.servlet;

import br.com.senac.pi5.bean.Dependente;
import br.com.senac.pi5.bean.DetalhesPassagem;
import br.com.senac.pi5.bean.Passageiro;
import br.com.senac.pi5.bean.Passagem;
import br.com.senac.pi5.bean.Voo;
import br.com.senac.pi5.dao.DependenteDao;
import br.com.senac.pi5.dao.PassagemDao;
import br.com.senac.pi5.dao.PedidoCompraDao;
import br.com.senac.pi5.dao.VooDao;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DependenteServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        DetalhesPassagem detalhes = (DetalhesPassagem) request.getSession(true).getAttribute("detalhesPassagem");

        Voo vooIda = (Voo) request.getSession(true).getAttribute("vooIda");
        Passageiro passageiro = (Passageiro) request.getSession(true).getAttribute("Passageiro");
        Dependente dependente = new Dependente();

        PedidoCompraDao pedidoCompraDao = null;
        String pedidoCompra = null;

        try {
            pedidoCompraDao = new PedidoCompraDao();
        } catch (SQLException ex) {
            Logger.getLogger(DependenteServlet.class.getName()).log(Level.SEVERE, null, ex);
        }

        try {
            pedidoCompra = pedidoCompraDao.criaPedido(passageiro);
        } catch (SQLException ex) {
            Logger.getLogger(DependenteServlet.class.getName()).log(Level.SEVERE, null, ex);
        }

        String[] nome = request.getParameterValues("nome");
        String[] sobrenome = request.getParameterValues("sobrenome");
        String[] sexo = request.getParameterValues("sexo");
        String[] rg = request.getParameterValues("rg");
        String[] cpf = request.getParameterValues("cpf");
        String[] dt_nasc = request.getParameterValues("dt_nasc");
        String[] poltronas = request.getParameterValues("poltronas");

        for (int i = 0; i < detalhes.getListaDependentes().size(); i++) {
            detalhes.getListaDependentes().get(i).setNome(nome[i]);
            detalhes.getListaDependentes().get(i).setSobrenome(sobrenome[i]);
            detalhes.getListaDependentes().get(i).setSexo(sexo[i]);
            detalhes.getListaDependentes().get(i).setRg(rg[i]);
            detalhes.getListaDependentes().get(i).setCpf(cpf[i]);
            detalhes.getListaDependentes().get(i).setDt_nasc(dt_nasc[i]);

            try {
                DependenteDao dao = new DependenteDao();
                dependente = dao.adiciona(detalhes.getListaDependentes().get(i));
                VooDao vooDao = new VooDao();
                vooDao.reservarLugares(vooIda.getCodigo(), detalhes.getTotalPessoas(), detalhes.IsExecutiva());

                PassagemDao passagemDao = new PassagemDao();
                Passagem passagem = new Passagem();
                passagem.setDependente(dependente);
                passagem.setPassageiro(passageiro);
                passagem.setVoo(vooIda);
                passagem.setPreco(detalhes.getPreco().getSubtotal());
                passagem.setAssento(poltronas[i]);
                passagem.setPedidoCompra(pedidoCompraDao.buscaPedido(pedidoCompra));

                passagemDao.criarPassagem(passagem);

                if (detalhes.isIdaEvolta()) {
                    Voo vooVolta = (Voo) request.getSession(true).getAttribute("vooVolta");
                    vooDao.reservarLugares(vooVolta.getCodigo(), detalhes.getTotalPessoas(), detalhes.IsExecutiva());

                    Passagem passagemVolta = new Passagem();
                    passagemVolta.setDependente(dependente);
                    passagemVolta.setPassageiro(passageiro);
                    passagemVolta.setAssento(poltronas[i]);
                    passagemVolta.setPreco(detalhes.getPreco().getSubtotal());
                    passagemVolta.setVoo(vooVolta);
                    passagemVolta.setPedidoCompra(pedidoCompraDao.buscaPedido(pedidoCompra));
                    passagemDao.criarPassagem(passagemVolta);

                }
            } catch (SQLException ex) {
                Logger.getLogger(DependenteServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        PassagemDao listaDao = null;
        List<Passagem> listaPassagensCompradas = null;
        try {
            listaDao = new PassagemDao();
            listaPassagensCompradas = listaDao.listaPassagens(pedidoCompra);
        } catch (SQLException | ParseException ex) {
            Logger.getLogger(DependenteServlet.class.getName()).log(Level.SEVERE, null, ex);
        }

        request.getSession().setAttribute("Lista", listaPassagensCompradas);
        RequestDispatcher rd = request.getRequestDispatcher("/compraEfetuada.jsp");
        rd.forward(request, response);

    }
}
